<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Tiw\V20190919\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeVideoGenerationTask response structure.
 *
 * @method string getGroupId() Obtain Group ID corresponding to the task.
 * @method void setGroupId(string $GroupId) Set Group ID corresponding to the task.
 * @method integer getRoomId() Obtain Room ID corresponding to the task.
 * @method void setRoomId(integer $RoomId) Set Room ID corresponding to the task.
 * @method string getTaskId() Obtain Task ID.
 * @method void setTaskId(string $TaskId) Set Task ID.
 * @method integer getProgress() Obtain Disused.
 * @method void setProgress(integer $Progress) Set Disused.
 * @method string getStatus() Obtain Status of the recording video generation task. Valid values:
- QUEUED: Queuing.
- PROCESSING: Video generation in progress.
- FINISHED: Video generation finished. (To determine whether the task succeeded or failed, check the error code and message.)
 * @method void setStatus(string $Status) Set Status of the recording video generation task. Valid values:
- QUEUED: Queuing.
- PROCESSING: Video generation in progress.
- FINISHED: Video generation finished. (To determine whether the task succeeded or failed, check the error code and message.)
 * @method integer getTotalTime() Obtain Total video playback duration. Unit: milliseconds.
 * @method void setTotalTime(integer $TotalTime) Set Total video playback duration. Unit: milliseconds.
 * @method VideoInfo getVideoInfos() Obtain Disused. Use the `VideoInfoList` parameter.
 * @method void setVideoInfos(VideoInfo $VideoInfos) Set Disused. Use the `VideoInfoList` parameter.
 * @method array getVideoInfoList() Obtain List of videos generated by the recording video generation tasks.
 * @method void setVideoInfoList(array $VideoInfoList) Set List of videos generated by the recording video generation tasks.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeVideoGenerationTaskResponse extends AbstractModel
{
    /**
     * @var string Group ID corresponding to the task.
     */
    public $GroupId;

    /**
     * @var integer Room ID corresponding to the task.
     */
    public $RoomId;

    /**
     * @var string Task ID.
     */
    public $TaskId;

    /**
     * @var integer Disused.
     */
    public $Progress;

    /**
     * @var string Status of the recording video generation task. Valid values:
- QUEUED: Queuing.
- PROCESSING: Video generation in progress.
- FINISHED: Video generation finished. (To determine whether the task succeeded or failed, check the error code and message.)
     */
    public $Status;

    /**
     * @var integer Total video playback duration. Unit: milliseconds.
     */
    public $TotalTime;

    /**
     * @var VideoInfo Disused. Use the `VideoInfoList` parameter.
     */
    public $VideoInfos;

    /**
     * @var array List of videos generated by the recording video generation tasks.
     */
    public $VideoInfoList;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param string $GroupId Group ID corresponding to the task.
     * @param integer $RoomId Room ID corresponding to the task.
     * @param string $TaskId Task ID.
     * @param integer $Progress Disused.
     * @param string $Status Status of the recording video generation task. Valid values:
- QUEUED: Queuing.
- PROCESSING: Video generation in progress.
- FINISHED: Video generation finished. (To determine whether the task succeeded or failed, check the error code and message.)
     * @param integer $TotalTime Total video playback duration. Unit: milliseconds.
     * @param VideoInfo $VideoInfos Disused. Use the `VideoInfoList` parameter.
     * @param array $VideoInfoList List of videos generated by the recording video generation tasks.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("GroupId",$param) and $param["GroupId"] !== null) {
            $this->GroupId = $param["GroupId"];
        }

        if (array_key_exists("RoomId",$param) and $param["RoomId"] !== null) {
            $this->RoomId = $param["RoomId"];
        }

        if (array_key_exists("TaskId",$param) and $param["TaskId"] !== null) {
            $this->TaskId = $param["TaskId"];
        }

        if (array_key_exists("Progress",$param) and $param["Progress"] !== null) {
            $this->Progress = $param["Progress"];
        }

        if (array_key_exists("Status",$param) and $param["Status"] !== null) {
            $this->Status = $param["Status"];
        }

        if (array_key_exists("TotalTime",$param) and $param["TotalTime"] !== null) {
            $this->TotalTime = $param["TotalTime"];
        }

        if (array_key_exists("VideoInfos",$param) and $param["VideoInfos"] !== null) {
            $this->VideoInfos = new VideoInfo();
            $this->VideoInfos->deserialize($param["VideoInfos"]);
        }

        if (array_key_exists("VideoInfoList",$param) and $param["VideoInfoList"] !== null) {
            $this->VideoInfoList = [];
            foreach ($param["VideoInfoList"] as $key => $value){
                $obj = new VideoInfo();
                $obj->deserialize($value);
                array_push($this->VideoInfoList, $obj);
            }
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
